load("//bazel:macros.bzl", "exports_files_legacy")
load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary")
load("//bazel:cc_binary_with_flags.bzl", "cc_binary_with_flags")

licenses(["notice"])

exports_files_legacy()

LINKOPTS = [
    "-sALLOW_MEMORY_GROWTH",
    "-sUSE_PTHREADS=0",  # Disable pthreads
    "-sMODULARIZE",
    "-sDISABLE_EXCEPTION_CATCHING",  # Disable all exception catching
    "-sWASM",
    "-sMAX_WEBGL_VERSION=2",
    "-sFORCE_FILESYSTEM=0",
    "-sFILESYSTEM=0",
    "-sASSERTIONS",  # Turn on assertions
    "-sGL_ASSERTIONS",
    "-sEXPORT_NAME=HelloWorld",
]

cc_binary_with_flags(
    name = "hello_world.webgl",
    srcs = [
        "//example:HelloWorld.cpp",
    ],
    linkopts = LINKOPTS,
    set_flags = {
        "gpu_backend": [
            "gl_backend",
        ],
        "with_gl_standard": [
            "webgl_standard",
        ],
    },
    # This target won't build successfully on its own because of missing emscripten
    # headers etc. Therefore, we hide it from wildcards.
    tags = ["manual"],
    deps = [
        "//:skia_public",
        "//tools/sk_app",
    ],
)

wasm_cc_binary(
    name = "hello_world_wasm",
    cc_target = ":hello_world.webgl",
)
